package redis_cache

import (
	"github.com/go-redis/redis/v8"
	"github.com/go-redsync/redsync/v4"
	"github.com/go-redsync/redsync/v4/redis/goredis/v8"
	"github.com/spf13/viper"
)

// ConnectToRedis 创建一个 Redis 客户端实例
func ConnectToRedis(dbName string) *redis.Client {
	return redis.NewClient(&redis.Options{
		Addr:     viper.GetString(dbName + ".Addr"),
		Password: viper.GetString(dbName + ".Password"),
		DB:       0,
	})
}

// NewSync 基于 Redis 客户端创建一个 Redsync 分布式锁实例
func NewSync(rdb *redis.Client) *redsync.Redsync {
	pool := goredis.NewPool(rdb) // 将 Redis 客户端适配为 Redsync 的连接池接口
	re := redsync.New(pool)      // 使用 Redsync 创建锁管理器
	return re
}
